package internal.selection;

import java.util.Arrays;

/**
 * @描述：简单选择排序
 * @思想：在要排序的一组数中，选出最小（或者最大）的一个数与第1个位置的数交换；然后在剩下的数当中再找最小（或者最大）的与第2个位置的数交换，依次类推
 * @适用场合：选择排序在实际应用中和冒泡排序基本差不多，使用较少。
 * @作者：hongxingfan
 * @时间：2014年9月4日 下午8:37:18
 */
public class SimpleSelectionSort {

    public static void main(String[] args) {
        int[] datas = { 9, 4, 1, 8, 7, 5, 2, 0, 3, 4, 6 };

        simpleSelectionSort(datas);

        // 输出结果
        System.out.println(Arrays.toString(datas));
    }

    // 每次选择出最小的放在索引位置；实实在在的两次for循环
    public static void simpleSelectionSort(int[] datas) {
        int lastIndex = datas.length - 1;
        for (int i = 0; i <= lastIndex; i++) {
            int min = datas[i];
            int index = i; // 记住最小元素的索引
            for (int j = i + 1; j <= lastIndex; j++) {
                if (min > datas[j]) {
                    min = datas[j];
                    index = j;
                }
            }
            // 交换数据
            datas[index] = datas[i];
            datas[i] = min;
        }
    }
}
